From 5d1382fb9719939316188ab8ae3cf9b854610002 Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Thu, 17 Aug 2006 19:16:01 +0100 Subject: [PATCH] [XEN] Fix page-fault handler to fall back to shadow-mode fault path if writable pagetable logic fails to fix up a fault. Signed-off-by: Keir Fraser --- xen/arch/x86/traps.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 2d398712fe..7a5d2f868a 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -888,11 +888,12 @@ static int fixup_page_fault(unsigned long addr, struct cpu_user_regs *regs) return (spurious_page_fault(addr, regs) ? EXCRET_not_a_fault : 0); } - if ( likely(VM_ASSIST(d, VMASST_TYPE_writable_pagetables)) && + if ( VM_ASSIST(d, VMASST_TYPE_writable_pagetables) && guest_kernel_mode(v, regs) && ((regs->error_code & (PGERR_write_access|PGERR_page_present)) == - (PGERR_write_access|PGERR_page_present)) ) - return ptwr_do_page_fault(d, addr, regs) ? EXCRET_fault_fixed : 0; + (PGERR_write_access|PGERR_page_present)) && + ptwr_do_page_fault(d, addr, regs) ) + return EXCRET_fault_fixed; if ( shadow2_mode_enabled(d) ) return shadow2_fault(addr, regs); -- 2.30.2